package galaxy.kernel.system;

import java.util.LinkedHashMap;
import java.util.Map;

public class ECSSystems {
    public Map<Class<? extends ECSSystem>, ECSSystem> systems = new LinkedHashMap<>();

    public ECSSystems add(ECSSystem system) {
        systems.put(system.getClass(), system);
        return this;
    }

    public <T extends ECSSystem> T get(Class<? extends ECSSystem> clazz) {
        ECSSystem c = this.systems.get(clazz);
        return (T) c;
    }

    public Map<Class<? extends ECSSystem>, ECSSystem> get() {
        return systems;
    }

    public void start(){
        systems.values().forEach(system ->{
            if (system.isEnabled()) {
                system.load();
            }
        });

        systems.values().forEach(system ->{
            if (system.isEnabled()){
                system.start();
            }
        });
    }
}
